Source code for src.cmd.transform

import subprocess, sys, os
from contextlib import closing

from util import *
from ..util import get_cnxn, check_file
from ..configuration import db_info, config

[docs]def transform(cmd): args = cmd.args with closing(get_cnxn(db_info['stand']['name'],{'db_info':db_info['stand']})) as cnx: with closing(cnx.cursor()) as c: c.execute('SELECT COUNT(*) FROM Subject') num_subjects = c.fetchall()[0][0] print "Spawning Transform subprocesses..." _off_flags = args.offense_deletion_flags _off_flags = ' '.join('-d %s' % flag for flag in _off_flags) _cores = args.cores if _cores > 4: _cores = 4 for segment in ['arrest', 'sentence']: create_log_dir(os.path.join(config.tmp_out_dir, 'transform', segment)) for x in xrange(_cores): _position = x _num_subjects = num_subjects step = _num_subjects / _cores start = step * _position if x == _cores - 1: step += (_num_subjects % _cores) + 1 cmd.task_queue.put({ 'out_dir': check_file(args.out_dir, as_dir = True), 'meta_dir': check_file(args.metadata, as_dir = True), 'verbose': args.verbose, 'db_info': db_info['stand'], 'position': _position, 'tmp_out_dir': config.tmp_out_dir, #'recid_db_info': db_info['recid'], 'start': start, 'step': step, 'log_dir': create_log_dir(os.path.join(config.log_dir, 'set_%i' % config.current_set, 'transform', str(_position))), 'threads': args.thread, 'juv_flag': args.juv_flag, 'follow_period': int(args.follow_period), 'off_flags': [int(off) for off in args.offense_deletion_flags], }) cmd.start() #start the transform workers cmd.task_queue.join() #wait for the workers to finish cmd.flush() #flush the cmd logs